Sistema de Nombrado en Java (JNDI) [Parte I]

Antes de realizar cualquier operaci�n de servicio de nombres o de directorio, ncesitamos adquirir un contexto inicial--el punto de arranque dentro del espacio de nombres. Esto es porque todos los m�todos sobre servicios de nombres o directorios se realizan en relaci�n a alg�n contexto. Para obtener un contexto inicial tenemos que seguir estos pasos.

  1. Seleccionar el proveedor de servicios correspondiente al sevicio al que queremos acceder.
  2. Especificar la configuraci�n que necesite el contexto inicial.
  3. Llamar al constructor InitialContext.

.�Seleccionar el Proveedor de Servicio para el Contexto Incial

Podemos especificar el proveedor de servicio a utilizar para el contexto inicial creando un conjunto de propiedades de entorno (una Hashtable) y a�adirle el nombre de la clase del proveedor de servicio.

Por ejemplo, si estamos usando el proveedor de sevicios LDAP de Sun Microsystems, nuestro c�digo se deber�a parecer a esto.

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, 
	"com.sun.jndi.ldap.LdapCtxFactory");

Para especificar el proveedor de servicio del sistema de fichero proporcionado por Sun Microsystems, deber�amos escribir un c�digo como �ste.

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, 
	"com.sun.jndi.fscontext.RefFSContextFactory");

Tambi�n podemos usar propiedades de sistema para especificar el proveedor de servicos a utilizar.

.�Suministrar la Infomaci�n que Necesita el Contexto Inicial

Clientes de diferentes directorios podr�an necesitar distinta informaci�n para contactar con el directorio. Por ejemplo, podr�amos necesitar conocer en qu� m�quina se est� ejecutando el servidor y qu� informaci�n es necesaria para identificar al usuario para el directorio. Dicha informaci�n es pasada al proveedor de servicio mediante propiedades de entorno. El JNDI especifica algunas propiedades de entorno gen�ricas que el proveedor de servicio puede utilizar. La documentaci�n de nuestro proveedor de servicio nos dar� detalles sobre la informaci�n requerida por estas propiedades.

Por ejemplo, supongamos que el programa est� usando el proveedor de servicios LDAP. Este proveedor requiere que el programa especifica la localizaci�n del servidor LDAP, as� como informaci�n de entidad del usuario.

Para proporcionar esta informaci�n, podriamos escribir un c�digo como �ste.

env.put(Context.PROVIDER_URL, "ldap://ldap.wiz.com:389");
env.put(Context.SECURITY_PRINCIPAL, "joeuser");
env.put(Context.SECURITY_CREDENTIALS, "joepassword");

Este tutorial usa los proveedores de servicios del sistema de ficheros y LDAP de Sun Microsystems. Para los ejemplos que usan el sistema de ficheros, suministramos la URL del proveedor la URL correspondiente al path que dimos en el programa Setup. Por ejemplo, si usamos el directorio /tmp/tutorial en el programa Setup, nuestro c�digo se podr�a parecer a esto.

env.put(Context.PROVIDER_URL, "file:/tmp/tutorial/");

Los ejemplos que usan LDAP asumen que el servidor ha sido instalado en el puerto 389 de la m�quina local con el nombre de ra�z distinguido de "o=JNDITutorial" y no se requiere autentificaci�n para actualizar este directorio. Incluyen el siguiente codigo para configurar el entorno.

env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

Si estamos usando un directorio que se configura de forma diferente, necesitaremos configurar de la forma adecuada estas propiedades de entorno.. Por ejemplo, si el directorio se est� ejecutando en otra m�quina, necesitaremos reemplazar "localhost" con el nombre de esa m�quina.

.�Crear el Contexto Inicial

Ahora est�mos listos para crear el contexto incial. Para hacer esto, pasamos al constructor de InitialContext las propiedades de entorno que hemos creado anteriormente.

Context ctx = new InitialContext(env);

Ahora que tenemos una referencia a un objeto Context, podemos empezar a acceder al servicio de nombres.

Para realizar operaciones de directorio, necesitamos usar un InitialDirContext.

Para hacer esto usamos uno de sus constructores.

DirContext ctx = new InitialDirContext(env);

Esta sentencia devuelve una referencia a un objeto DirContext para realizar operaciones de directorio.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO